package w83b.w83bOperacionesPaso.w83bCierre;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.Region;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import w83b.w83bBeans.W83bCierreMensualBean;
import w83b.w83bBeans.W83bUsuarioXLNetsBean;
import w83b.w83bUtilidades.W83bUtilidadesExcel;
import w83b.w83bUtilidadesComunes.W83bClsConstantes;
import w83b.w83bUtilidadesComunes.W83bDateUtil;
import w83b.w83bUtilidadesComunes.W83bUtilidadesN38API;
import es.ejie.frmk.infraestructura.internacionalizacion.Q70GestorMensajesi18n;
import es.ejie.frmk.listeners.base.Q70ListenerUtils;
import es.ejie.frmk.presentacion.operacion.paso.Q70ActionPasoOP;
import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

// TODO: Auto-generated Javadoc
/**
 * The Class W83bTablaConveniosOP.java.
 *
 * @author Deusto Sistemas
 */
public class W83bImprimirTablaAction extends Q70ActionPasoOP{

	int j=0;//NOPMD
	int contador=0;//NOPMD
	
	protected void processOP(Q70ContextoEJIE contexto, ActionErrors errores, ActionMapping mapping,
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		
	}

	protected ActionForward processForward(Q70ContextoEJIE contexto, ActionErrors errors, ActionMapping mapping, 
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

		String strRutaExcel = Q70ListenerUtils.getApplicationProperty("RUTA_PLANTILLAS_EXCEL")+"plantillaExcelw83bTablaCierremensual.xls";
		InputStream inputStream = W83bImprimirTablaAction.class.getResourceAsStream(strRutaExcel);
		HSSFWorkbook wb = new HSSFWorkbook(inputStream);
		
		wb.setSheetName(0,"Hoja1"); // Creación de la hoja
        HSSFSheet sheet = wb.getSheetAt(0); // Creación de la hoja
        Map mapa = (HashMap)contexto.get("w83bMapaCierreBean");
		List lista=(ArrayList)mapa.get("tabla");
        W83bCierreMensualBean cierreBean = (W83bCierreMensualBean)contexto.get("w83bCierreMensualResultadoBean");
        
        //W83bUtilidadesExcel excel = new W83bUtilidadesExcel(wb);

        String idioma = (String)contexto.get(W83bClsConstantes.CONSTANTE_CONTEXTO_IDIOMA);
        
        W83bUtilidadesExcel.crearCabeceraPieEstandar(sheet, idioma,(W83bUsuarioXLNetsBean)contexto.get(W83bClsConstantes.CONSTANTE_CONTEXTO_USUARIO));      
        
        W83bUsuarioXLNetsBean usuario = (W83bUsuarioXLNetsBean)contexto.get(W83bClsConstantes.CONSTANTE_CONTEXTO_USUARIO);
        String provincia = W83bUtilidadesN38API.elegirProvinciaDelegacion(usuario.getPerfilXLNets());       
        
        HSSFRow row;
        HSSFCell cell;
       HSSFCell cell2;//NOPMD
        
        StringBuffer tituloImagenEs = new StringBuffer();
        StringBuffer tituloImagenEu = new StringBuffer();
        
        tituloImagenEu.append(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.informes.tituloImagenInforme_eu",idioma));
        tituloImagenEs.append(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.informes.tituloImagenInforme_es",idioma));
       
        row = sheet.getRow((short)3); 
        cell = row.getCell((short)5);
        
        cell.setCellValue(tituloImagenEu.toString());
        
        cell = row.getCell((short)9); 
        cell.setCellValue(tituloImagenEs.toString());
        
        tituloImagenEs = new StringBuffer();
        tituloImagenEu = new StringBuffer();
        
        
        if(W83bClsConstantes.CONSTANTE_SERVICIOS_CENTRALES.equals(provincia)){
        	tituloImagenEu.append(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.informes.direccionTrabajo_eu",idioma));
        	tituloImagenEs.append(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.informes.direccionTrabajo_es",idioma));
        }else if(W83bClsConstantes.CONSTANTE_BIZKAIA.equals(provincia)){
        	tituloImagenEu.append(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.informes.delegacionBizkaia_eu",idioma));        	
        	tituloImagenEs.append(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.informes.delegacionBizkaia_es",idioma));        	
        }else if(W83bClsConstantes.CONSTANTE_GIPUZKOA.equals(provincia)){
        	tituloImagenEu.append(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.informes.delegacionGuipuzcoa_eu",idioma));
        	tituloImagenEs.append(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.informes.delegacionGuipuzcoa_es",idioma));
        }else if(W83bClsConstantes.CONSTANTE_ALAVA.equals(provincia)){
        	tituloImagenEu.append(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.informes.delegacionAlava_eu",idioma));
        	tituloImagenEs.append(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.informes.delegacionAlava_es",idioma));
        }
        	
        
        
        
        row = sheet.getRow((short)5); 
        cell = row.getCell((short)5);
        cell.setCellValue(tituloImagenEu.toString());
        
        cell = row.getCell((short)9); 
        cell.setCellValue(tituloImagenEs.toString());
        
        row = sheet.getRow((short)9); 
        cell = row.getCell((short)0); 
        cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.herramientas.cierreMensual",W83bClsConstantes.CONSTANTE_EUSKARA)+"/"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.herramientas.cierreMensual",W83bClsConstantes.CONSTANTE_CASTELLANO));
        
        row = sheet.getRow((short)11); 
        cell = row.getCell((short)2);
        cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.preavisos.tabla.territorio",W83bClsConstantes.CONSTANTE_EUSKARA)+"/"+"\n"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.preavisos.tabla.territorio",W83bClsConstantes.CONSTANTE_CASTELLANO));
        cell = row.getCell((short)3); 
        if(StringUtils.isNotEmpty(cierreBean.getDescTerritorio())){
        	cell.setCellValue(cierreBean.getDescTerritorio().toUpperCase());
        }
        cell = row.getCell((short)6);
        cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.certificaciones.fechaEleccionDesde",W83bClsConstantes.CONSTANTE_EUSKARA)+"/"+"\n"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.certificaciones.fechaEleccionDesde",W83bClsConstantes.CONSTANTE_CASTELLANO));
        cell = row.getCell((short)9); 
        if(StringUtils.isNotEmpty(cierreBean.getFechaelecciondesde())){
        	cell.setCellValue(cierreBean.getFechaelecciondesde());
        }
        cell = row.getCell((short)11); 
        cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.fechaRegDefinitivoHasta",W83bClsConstantes.CONSTANTE_EUSKARA)+"/"+"\n"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.fechaRegDefinitivoHasta",W83bClsConstantes.CONSTANTE_CASTELLANO));
        cell = row.getCell((short)15);
        if(StringUtils.isNotEmpty(cierreBean.getFecharegistrohasta())){
        	cell.setCellValue(cierreBean.getFecharegistrohasta());
        }
        
        row = sheet.getRow((short)12); 
        cell = row.getCell((short)2); 
        cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.annocerrado",W83bClsConstantes.CONSTANTE_EUSKARA)+"/"+"\n"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.annocerrado",W83bClsConstantes.CONSTANTE_CASTELLANO));
        cell = row.getCell((short)3); 
        if(StringUtils.isNotEmpty(cierreBean.getAnocierre())){
        	cell.setCellValue(Integer.parseInt(cierreBean.getAnocierre()));
        }
        cell = row.getCell((short)6);  
        cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.mescerrado",W83bClsConstantes.CONSTANTE_EUSKARA)+"/"+"\n"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.mescerrado",W83bClsConstantes.CONSTANTE_CASTELLANO));
        cell = row.getCell((short)9); 
        cell.setCellValue(W83bDateUtil.getInstance().sabernombremes(Integer.parseInt(cierreBean.getMes())-1,idioma).toUpperCase());    
        
        int contador=15;
        row = sheet.getRow((short)contador); 
    	cell = row.getCell((short)3);
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.ela",W83bClsConstantes.CONSTANTE_EUSKARA));
    	cell = row.getCell((short)4);
    	cell2 = row.getCell((short)5);
    	sheet.addMergedRegion(new Region((short)contador,(short)4,(short)contador,(short)5));//NOPMD
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.ccoo",W83bClsConstantes.CONSTANTE_EUSKARA));
    	cell = row.getCell((short)6);
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.ugt",W83bClsConstantes.CONSTANTE_EUSKARA));
    	cell = row.getCell((short)7);
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.lab",W83bClsConstantes.CONSTANTE_EUSKARA));
    	cell = row.getCell((short)8);
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.uso",W83bClsConstantes.CONSTANTE_EUSKARA));
    	cell = row.getCell((short)9);
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.cuis",W83bClsConstantes.CONSTANTE_EUSKARA));
    	cell = row.getCell((short)10);
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.cti",W83bClsConstantes.CONSTANTE_EUSKARA));
    	cell = row.getCell((short)11);
    	cell2 = row.getCell((short)12);
    	sheet.addMergedRegion(new Region((short)contador,(short)11,(short)contador,(short)12));//NOPMD
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.csicsi",W83bClsConstantes.CONSTANTE_EUSKARA));
    	cell = row.getCell((short)13);
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.resultados.nosin",W83bClsConstantes.CONSTANTE_CASTELLANO));
    	cell = row.getCell((short)14);
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.herramientas.otrosInf",idioma).toUpperCase());
    	cell = row.getCell((short)15);
    	cell.setCellValue(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.actas.total",idioma).toUpperCase());
        for (int i=0; i<lista.size();i++){
        	W83bCierreMensualBean cm = (W83bCierreMensualBean)lista.get(i);
        	contador++;
        	row = sheet.getRow((short)contador); 
        	cell = row.getCell((short)2);
        	cell.setCellValue(cm.getTexto());
            //ELA
        	cell = row.getCell((short)3);
        	cell.setCellValue(cm.getEla());
        	//CCOO
        	cell = row.getCell((short)4);
        	cell2 = row.getCell((short)5);
        	sheet.addMergedRegion(new Region((short)contador,(short)4,(short)contador,(short)5));//NOPMD
        	cell.setCellValue(cm.getCcoo());
        	//UGT
        	cell = row.getCell((short)6);
        	cell.setCellValue(cm.getUgt());
        	//LAB
        	cell = row.getCell((short)7);
        	cell.setCellValue(cm.getLab());
        	//USO
        	cell = row.getCell((short)8);
        	cell.setCellValue(cm.getUso());
        	//ESK
        	cell = row.getCell((short)9);
        	cell.setCellValue(cm.getCuis());
        	//CTI
        	cell = row.getCell((short)10);
        	cell.setCellValue(cm.getCti());
        	//CSI-CSIF
        	cell = row.getCell((short)11);
        	cell2 = row.getCell((short)12);
        	sheet.addMergedRegion(new Region((short)contador,(short)11,(short)contador,(short)12));//NOPMD
        	cell.setCellValue(cm.getCsi());
        	//NOSIN
        	cell = row.getCell((short)13);
        	cell.setCellValue(cm.getNosin());
        	//OTROS
        	cell = row.getCell((short)14);
        	cell.setCellValue(cm.getOtros());
        	//TOTAL
        	cell = row.getCell((short)15);
        	cell.setCellValue(cm.getTotaldel());
        	
        }
        
        byte[] bytesExcel = W83bUtilidadesExcel.fncExcelToBytes(wb);
        
        response.setContentType("application/vnd.ms-excel");
        response.setContentLength(bytesExcel.length);
        response.setHeader("Content-disposition","attachment;filename=listadoCierreMensual.xls");
        response.getOutputStream().write(bytesExcel);
        response.getOutputStream().flush();

		
		return null;
	}
	
	
}

	
